#include "GlobalConfig.hpp"
#include <iostream>
#include <fstream>
#include "Serializer.hpp"

bool GlobalConfig::initialize() {
    // 读取文件
    std::ifstream rfile(configPath);
    if (!rfile.is_open()) {
        // 创建文件并写入初始配置
        std::ofstream wfile(configPath);

        nlohmann::json configJson = EditorConfigSerializer::serializer(this);

        wfile << configJson.dump(4); // 缩进4个空格，便于阅读

        wfile.close();
    }else {
        nlohmann::json configJson;
        rfile >> configJson;
        rfile.close();

        EditorConfigSerializer::derializer(configJson, this);
    }

    return true;
}

void GlobalConfig::save() {
    std::ofstream wfile(configPath);

    nlohmann::json configJson = EditorConfigSerializer::serializer(this);

    wfile << configJson.dump(4); // 缩进4个空格，便于阅读

    wfile.close();
}

void GlobalConfig::shutdown() {
    save();
}